package com.icity.util;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;

import com.icity.common.UserSession;
import com.icity.entity.PartnerMsg;
import com.icity.entity.PermissionsEntity;


/**
 * 权限工具类，每个method调用即可实现权限管理
 * @author apple
 *
 */
@Component
public class PermissionsUtil {

	public static PermissionsEntity getPermissions(HttpServletRequest request) {
		Map<String, Object>params=new HashMap<>();
		StringBuffer parameters=new StringBuffer();
		PermissionsEntity permissionsEntity=null;
		// 获取当前登录用户的用户
		PartnerMsg partnerMsgNow = (PartnerMsg) request.getSession().getAttribute(UserSession.PARTNER_MSG);
		String partner_id = request.getParameter("partner_id");
		if(StringUtils.isNotBlank(partner_id)) {
			String []arr=partner_id.split(",");
			if(arr!=null && arr.length>0) {
				partner_id=arr[arr.length-1];
			}
		}
		if (partnerMsgNow != null && partnerMsgNow.getIs_system() == 1) {// 是系统用户如果合伙人id存在，是条件查询，不是是全部查询

			if (StringUtils.isNotBlank(partner_id)) {//条件查询
				params.put("partner_id", partner_id);
				parameters.append("&partner_id=" + partner_id);
			}else {//全部查询
				params.put("partner_id", partnerMsgNow.getUnique_code());
				parameters.append("&partner_id=" + partnerMsgNow.getUnique_code());
			}

		} else {// 不是系统用户 
			if ("87a11a33b9b04f40b5924456b497baba".equals(partnerMsgNow.getParent_code())) {// 判断是否是管理员创建的用户
				//是管理员创建的用户，分为合伙人和系统管理官
				if ("1".equals(partnerMsgNow.getIs_partner_or_user().toString())) {// 是管理员旗下的合伙人
					if (StringUtils.isNotBlank(partner_id)) {
						params.put("partner_id", partner_id);
						parameters.append("&partner_id=" + partner_id);
					}else {
						params.put("partner_id",partnerMsgNow.getUnique_code());
						parameters.append("&partner_id=" + partnerMsgNow.getUnique_code());
					}
				} else if ("2".equals(partnerMsgNow.getIs_partner_or_user().toString())) {// 管理员旗下的用户，就是icity角色
					if (StringUtils.isNotBlank(partner_id)) {
						params.put("partner_id", partner_id);
						parameters.append("&partner_id=" + partner_id);
					}else {
						params.put("partner_id", "87a11a33b9b04f40b5924456b497baba");
						parameters.append("&partner_id=" + "87a11a33b9b04f40b5924456b497baba");
					}
				}
			} else {// 不是顶级合伙人创建的用户，是子合伙人或者合伙人管理员创建的用户
				if ("1".equals(partnerMsgNow.getIs_partner_or_user().toString())) {// 是管理员旗下的合伙人
					if (StringUtils.isNotBlank(partner_id)) {
						params.put("partner_id", partner_id);
						parameters.append("&partner_id=" + partner_id);
					}else {
						params.put("partner_id",partnerMsgNow.getUnique_code());
						parameters.append("&partner_id=" + partnerMsgNow.getUnique_code());
					}
				}else if ("2".equals(partnerMsgNow.getIs_partner_or_user().toString())) {// 管理员旗下的用户，就是icity角色
					if (StringUtils.isNotBlank(partner_id)) {
						params.put("partner_id", partner_id);
						parameters.append("&partner_id=" + partner_id);
					}else {
						params.put("partner_id",partnerMsgNow.getParent_code());
						parameters.append("&partner_id=" + partnerMsgNow.getParent_code());
					}
				}
			}
		}
		permissionsEntity=new PermissionsEntity();
		permissionsEntity.setParams(params);
		permissionsEntity.setParameters(parameters);
		return permissionsEntity;
	}

}
